home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / rettig.arc / TRSOURCE.EXE / EXTENDA.MAC < prev    next >
Text File  |  1990-10-22  |  4KB  |  185 lines

  1. ;------------------------------------------------------------------------------
  2. ; Filename: EXTENDA.MAC
  3. ; Program.: Clipper Extended Library
  4. ; Author..: Ralph Davis
  5. ; Date....: June 1, 1986
  6. ; Notice..: Placed in the public domain by Tom Rettig Associates.
  7. ; Notes...: Assembly language macros for Clipper interface
  8. ;           Modified for use with Microsoft Macro Assembler.
  9. ;
  10.          EXTRN    __PARINFO:FAR
  11.          EXTRN    __PARC:FAR
  12.          EXTRN    __PARNI:FAR
  13.          EXTRN    __PARNL:FAR
  14.          EXTRN    __PARND:FAR
  15.          EXTRN    __PARDS:FAR
  16.          EXTRN    __PARL:FAR
  17.  
  18.          EXTRN    __RETC:FAR
  19.          EXTRN    __RETNI:FAR
  20.          EXTRN    __RETNL:FAR
  21.          EXTRN    __RETND:FAR
  22.          EXTRN    __RETDS:FAR
  23.          EXTRN    __RETL:FAR
  24.  
  25.  
  26. ; Equates from EXTEND.H
  27.  
  28. UNDEF     EQU     0
  29. CHARACTER EQU     1
  30. NUMERIC   EQU     2
  31. LOGICAL   EQU     4
  32. DATE      EQU     8
  33. ALIAS     EQU     16
  34.  
  35.  
  36. ; get number of parms passed--returned in AX
  37.  
  38. GET_PCOUNT MACRO              
  39.          XOR      AX,AX
  40.          PUSH     AX
  41.          CALL     __PARINFO
  42.          ADD      SP,2
  43.          ENDM
  44.  
  45.  
  46. ; get type of requested parm--returned in AX
  47.  
  48. GET_PTYPE MACRO   N 
  49.          MOV      AX,N
  50.          PUSH     AX
  51.          CALL     __PARINFO
  52.          ADD      SP,2
  53.          ENDM
  54.  
  55.  
  56. ; get requested parm as string--returns segment and offset in DX:AX
  57.  
  58. GET_CHAR MACRO    N           
  59.          MOV      AX,N
  60.          PUSH     AX
  61.          CALL     __PARC
  62.          ADD      SP,2
  63.          ENDM
  64.  
  65.  
  66. ; get requested parm as integer--returned in AX
  67.  
  68. GET_INT  MACRO    N
  69.          MOV      AX,N
  70.          PUSH     AX
  71.          CALL     __PARNI
  72.          ADD      SP,2
  73.          ENDM
  74.  
  75.  
  76. ; get requested parm as long integer--returned in DX:BX
  77.  
  78. GET_LONG MACRO    N            
  79.          MOV      AX,N
  80.          PUSH     AX
  81.          CALL     __PARNL
  82.          ADD      SP,2
  83.          ENDM
  84.  
  85.  
  86. ; get requested parm as double--returned in AX:BX:CX:DX
  87.  
  88. GET_DBL  MACRO    N   
  89.          MOV      AX,N
  90.          PUSH     AX
  91.          CALL     __PARND
  92.          ADD      SP,2
  93.          MOV      ES,DX
  94.          MOV      SI,AX
  95.          MOV      AX,ES:[SI]
  96.          MOV      BX,ES:[SI + 2]
  97.          MOV      CX,ES:[SI + 4]        
  98.          MOV      DX,ES:[SI + 6]        
  99.          ENDM
  100.  
  101. ; get requested parm as date string--returns segment and offset as DX:AX
  102.  
  103. GET_DATESTR MACRO N           
  104.          MOV      AX,N
  105.          PUSH     AX
  106.          CALL     __PARDS
  107.          ADD      SP,2
  108.          ENDM
  109.  
  110.  
  111. ; get requested parm as logical true or false--returned in AX
  112.  
  113. GET_LOGICAL MACRO N
  114.          MOV      AX,N
  115.          PUSH     AX
  116.          CALL     __PARL
  117.          ADD      SP,2
  118.          ENDM
  119.  
  120.  
  121. ; return char pointer in REG1:REG2
  122.  
  123. RET_CHAR MACRO    REG1,REG2   
  124.          IRP      X,<REG1,REG2>
  125.          PUSH     X
  126.          ENDM
  127.          CALL     __RETC
  128.          ADD      SP,4
  129.          ENDM
  130.  
  131.  
  132. ; return integer in REG1
  133.  
  134. RET_INT  MACRO    REG1        
  135.          PUSH     REG1
  136.          CALL     __RETNI
  137.          ADD      SP,2
  138.          ENDM
  139.  
  140.  
  141. ; return long integer in REG1:REG2
  142.  
  143. RET_LONG MACRO    REG1,REG2   
  144.          IRP      X,<REG1,REG2>
  145.          PUSH     X
  146.          ENDM
  147.          CALL     __RETNL
  148.          ADD      SP,4
  149.          ENDM
  150.  
  151.  
  152. ; return 8-byte floating-point number in REG1:REG2:REG3:REG4
  153.  
  154. RET_DBL  MACRO    REG1,REG2,REG3,REG4 
  155.          IRP      X,<REG1,REG2,REG3,REG4>
  156.          PUSH     X
  157.          ENDM
  158.          CALL     __RETND
  159.          ADD      SP,8
  160.          ENDM
  161.  
  162.  
  163. ; return date string pointed to by REG1:REG2
  164.  
  165. RET_DATESTR MACRO REG1,REG2           ; return pointer to date string
  166.                                       ; in REG1:REG2
  167.          IRP      X,<REG1,REG2>
  168.          PUSH     X
  169.          ENDM
  170.          CALL     __RETDS
  171.          ADD      SP,4
  172.          ENDM
  173.  
  174.  
  175. ; return logical true (1) or false (0) in REG1
  176.  
  177. RET_LOGICAL MACRO REG1                ; return 1 or 0 in REG1
  178.          PUSH     REG1
  179.          CALL     __RETL
  180.          ADD      SP,2
  181.          ENDM
  182.  
  183. ; EOF:  EXTENDA.MAC
  184.  
  185.